'''
Created on 15/05/2013

@author: Danilo M. Gomes
'''
from Perceptron import Perceptron
'''
API utilzada para plotar graficos em PyLab (http://matplotlib.org/)
'''

'''
Instancio o conjunto de treinamento
'''
conjunto_treinamento = [] 

'''
Leio o arquivo.
Para cada linha, crio variavel a, b, c que serao respectivamento altura, peso e tipo.
Tipo 1 = Atleta
Tipo 0 = Bailarino
Crio uma lista temporaria, para armazenar as variaveis, e entao adiciono a 
lista v ao meu conjunto de treinamento
'''
arq = open("Arquivo", "r")
texto = arq.readlines()
for linha in texto:
    a,b,c = linha.split(",")
    v = [float(a), float(b), int(c)]
    conjunto_treinamento.append(v)
arq.close()
'''
Exatamente como explicado acima
Esse conjunto eh o responsavel pela Runtime
'''
conjunto_execucao = []
arq = open("Execucao", "r")
texto = arq.readlines()
for linha in texto:
    a,b = linha.split(",")
    v = [float(a), float(b)]
    conjunto_execucao.append(v)
arq.close()

'''
Inicializo o Perceptron, e faco o treinamento utilizando o conjunto de treinamento
''' 
perceptron = Perceptron()

try:
    arq = open("Pesos", "r")
    texto = arq.readlines()
    for linha in texto:
        peso0, peso1 = linha.split("#")
    perceptron.peso0 = float(peso0)
    perceptron.peso1 = float(peso1)
    arq.close()
    
    for x in conjunto_execucao:
        r = perceptron.saida(x)
    
        if r == 1:
            print "Eh um atleta"
            #plot(x[0],x[1],'ob')  
        elif r == 0: 
            print "Bailarino"
            #plot(x[0],x[1],'or')
        else:
            print "Erro - Valor do r", r
    
except:
    perceptron.treinar(conjunto_treinamento)
    
    arq = open("Pesos", "w")
    peso0 = perceptron.peso0
    peso1 = perceptron.peso1
    arq.writelines(str(peso0) + "#")
    arq.writelines(str(peso1))
    arq.close()
    

'''
# plot of the separation line.
# The separation line is orthogonal to w
n = norm(perceptron.peso)
ww = perceptron.peso/n
ww1 = [ww[1],-ww[0]]
ww2 = [-ww[1],ww[0]]
plot([ww1[0], ww2[0]],[ww1[1], ww2[1]],'--k')
show()
'''
